From 9417fb2fb0611e6bbdf52a5094d6b50d5649ee2f Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Sun, 18 Dec 2005 20:29:43 +0100 Subject: [PATCH] Avoid div-by-zero crash if vmx guest specifies bogus timer divisor. Signed-off-by: Xiaofeng Ling --- xen/arch/x86/vmx_intercept.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xen/arch/x86/vmx_intercept.c b/xen/arch/x86/vmx_intercept.c index 69aeb4f325..8bac8a8e5c 100644 --- a/xen/arch/x86/vmx_intercept.c +++ b/xen/arch/x86/vmx_intercept.c @@ -203,6 +203,12 @@ static void pit_cal_count(struct vmx_virpit *vpit) u64 nsec_delta = (unsigned int)((NOW() - vpit->inject_point)); if (nsec_delta > vpit->period) VMX_DBG_LOG(DBG_LEVEL_1, "VMX_PIT:long time has passed from last injection!"); + if(vpit->init_val == 0) + { + printk("PIT init value == 0!\n"); + domain_crash_synchronous(); + } + vpit->count = vpit->init_val - ((nsec_delta * PIT_FREQ / 1000000000ULL) % vpit->init_val ); } -- 2.30.2